// 订阅观察者模式
// 文全

class EventServer {

  callbacks: any = {}
  /**
   *
   * @param eventName 订阅名称
   * @param parameter 回调函数
   */
  on (eventName: string, callback: any) {
    if (!this.callbacks[eventName]) {
      this.callbacks[eventName] = []
      this.callbacks[eventName].push(callback)
    } else {
      this.callbacks[eventName].push(callback)
    }
  }

  /**
   *
   * @param eventName 提交名称
   * @param parameter 提交参数
   */
  emit (eventName: string, parameter?: any) {
    if (!this.callbacks[eventName]) {
      return false
    } else {
      while (this.callbacks[eventName].length > 0) {
        this.callbacks[eventName].shift().call(this, parameter)
      }
    }
  }

}

export default new EventServer()
